package com.example.administrator.commonlibrary.bese;

import android.content.res.Configuration;
import android.os.Bundle;
import android.support.annotation.Keep;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.administrator.commonlibrary.utils.LogUtil;
import com.umeng.analytics.MobclickAgent;

import butterknife.ButterKnife;
@Keep
public abstract class BaseFragment<T extends BaseViewActivity> extends Fragment implements BaseContract.BaseView{
    private boolean only=true;
    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        ButterKnife.bind(this, view);
        onMView(view);
        initFontScale();
    }


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(onMLayout(), container, false);
        return view;
    }
    /**
      * @desc 此方法只要在不和ViewPager结合的时候才会调用
      * @param
      */
    @Override
    public void onHiddenChanged(boolean hidden) {
        super.onHiddenChanged(hidden);
        if (!hidden){
            onHidden(only);
            if (only){
                only=false;
            }
        }
    }

    /**
      * @desc  onHidden(only);此方法会在OnCreated 方法之前调用
     *  所以在第一个一面调用的时候，请注意空指针的问题
      * @param
      */
    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser){
            onHidden(only);
            if (only){
                only=false;
            }
        }
    }

    @Override
    public void onResume() {
        super.onResume();
        setUMPageStart(setPageTitle()); //统计页面("MainScreen"为页面名称，可自定义)
    }

    @Override
    public void onPause() {
        super.onPause();
        setUMPageEnd(setPageTitle());
    }

    /*
     * 初始化布局
     * */
    protected abstract int onMLayout();

    /**
      * @desc viewPager 的fragment的生命周期（在创建完之后），在切换的时候不会走，之后再按home建，他的创建之后的生命周期发法才会走
      * 结合ViewPager 的懒加载，这个方法只有在显示状态下调用
      * @param only 第一次调用的时候为true
      */
    protected abstract void onHidden(boolean only);
    /*
     * 初始化控件
     * */
    protected abstract void onMView(View view);

    public T getMyActivity() {
        try {
            return (T) getActivity();
        } catch (Exception e) {
            return null;
        }
    }
    //老人机  可以再 手机的设置里面设置字体大小，防止布局变形，让他对App不起作用
    private void initFontScale() {
        Configuration configuration = getResources().getConfiguration();
        configuration.fontScale = (float) 1;
        //0.85 小, 1 标准大小, 1.15 大，1.3 超大 ，1.45 特大
        DisplayMetrics metrics = new DisplayMetrics();
        getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);
        metrics.scaledDensity = configuration.fontScale * metrics.density;
        getActivity().getBaseContext().getResources().updateConfiguration(configuration, metrics);
    }

    /**
     * @desc 返回值：页面的标题
     * @param
     */
    protected abstract String setPageTitle();

    @Override
    public void setUMPageStart(String title) {
        if (TextUtils.isEmpty(title)) throw new NullPointerException("友盟页面统计,setPageTitle不能为Null");
         MobclickAgent.onPageStart(title);
    }

    @Override
    public void setUMPageEnd(String title) {
        if (TextUtils.isEmpty(title)) throw new NullPointerException("友盟页面统计,setPageTitle不能为Null");
         MobclickAgent.onPageEnd(title);
    }
}
